package com.mp.core.utils;

import com.alibaba.fastjson.JSONObject;

/**
 * @author jack
 * 这个类是提供给门户，ios，安卓，微信商城用的
 * 门户接受此类数据后需要使用本类的方法转换成对于的数据类型格式（类，或者list）
 * 其他自行处理
 * 200：表示成功
 * 501：bean验证错误，不管多少个错误都以map形式返回
 * 502：拦截器拦截到用户token出错
 * 503：参数错误
 * 505：redis报错
 * 555：异常抛出信息
 * 600：授权失败
 * 1000：表示普通错误，错误信息在msg字段中
 */
public class MrdJsonResult {

    /**
     * 返回json结果
     */
    private static JSONObject result = new JSONObject();

    /**
     * 格式化Json结果
     *
     * @param code
     * @param msg
     * @param data
     * @return
     */
    private static JSONObject setJSONObject(Integer code, String msg, Object data) {
        result.put("code", code);
        result.put("msg", msg);
        result.put("data", data);
        return result;
    }


    /**
     * getCode = 200
     *
     * @return
     */
    public static JSONObject ok() {
        return setJSONObject(200, "", null);
    }

    /**
     * getCode = 200
     *
     * @param data
     * @return
     */
    public static JSONObject ok(Object data) {
        return setJSONObject(200, "", data);
    }


    /**
     * @param code
     * @param msg
     * @return
     */
    public static JSONObject build(Integer code, String msg) {
        return setJSONObject(code, msg, null);
    }

    /**
     * getCode = 500
     *
     * @return
     */
    public static JSONObject buildError() {
        return setJSONObject(500, "服务器异常", null);
    }


    /**
     * getCode = 503
     *
     * @return
     */
    public static JSONObject build503() {
        return setJSONObject(503, "参数错误", null);
    }


    public static JSONObject build503(String msg) {
        return setJSONObject(503, msg, null);
    }

    /**
     * getCode = 1000
     *
     * @param msg
     * @return
     */
    public static JSONObject build1000(String msg) {
        return setJSONObject(1000, msg, null);
    }


    /**
     * token严重失败
     *
     * @return
     */
    public static JSONObject buildTokenError() {
        return setJSONObject(504, "token鉴权失败", null);
    }


}
